Golang 泛型应用 您所在的位置:网站首页 go 泛型应用 Golang 泛型应用

Golang 泛型应用

2023-05-31 06:07| 来源: 网络整理| 查看: 265

声明一个泛型函数 package main import "fmt" func printSlice[T any](s []T){ for _,v := range s{ fmt.Printf("%v\n",v) } } func main(){ printSlice[int]([]int{66,77,88,99,100}) printSlice[float64]([]float64{1.1,2.2,5.5}) printSlice[string]([]string{"烤鸡","烤鸭","烤鱼","烤面筋"}) //省略显示类型 printSlice([]int64{55,44,33,22,11}) }

[T any]参数的类型,意思是该函数支持任何T类型;

多个泛型参数语法:

[T, M any] [T any, M any] [T any, M comparable]

在调用这个泛型函数的时候,可以显示指定类型参数,

如: printSlice[int]([]int{66,77,88,99,100})

也可以省略显示类型

比如 printSlice([]int64(55,44,33,22,11))

声明一个泛型切片

带有类型参数的类型被叫做泛型类型。下面定义一个底层类型为切片类型的新类型 vector。它是可以存储任何类型的的切片。要使用泛型类型,要先对其进行实例化,就是给类型参数指定一个实参。

package main import "fmt" type vector[T any][]T func printSlice[T any](s []T){ for _,v := range s{ fmt.Printf("%v",v) } } func main(){ v:=vector[int]{58,1881} printSlice(v) v2:=vector[string]{"烤鸡","烤鸭","烤鱼","烤面筋"} printSlice(v2) } 声明一个泛型map package main import "fmt" type M[K string, V any] map[K]V //这里的K不支持any ,由于底层map不支持,所以使用string func main() { m1 := M[string, int]{"key": 1} m1["key"] = 2 m2 := M[string, string]{"key": "value"} m2["key"] = "new value" fmt.Println(m1, m2) } 声明一个泛型通道 package main import "fmt" type C[T any] chan T func main() { c1 := make(C[int], 10) c1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有